const print = console.log;

function toNumber(val) {
  // >> 有符号转换
  const result = val >> 0;
  print(result);
  return result;
}

function toNumber2(val) {
  // val的进制大于32位会有问题
  // >>> 无符号转换
  const result = val >>> 0;
  print(result);
  return result;
}

toNumber(null); // 0
toNumber({}); // 0
toNumber("10px"); // 0
toNumber("10"); // 10

// 超大的数
toNumber(Number.MAX_SAFE_INTEGER); // -1
toNumber2(Number.MAX_SAFE_INTEGER); // 4294967295

const val = Number.MAX_SAFE_INTEGER.toString(2); // 11111111111111111111111111111111111111111111111111111
const val1 = val.substring(0, 32); // 11111111111111111111111111111111
const num = parseInt(val1, 2); // 4294967295
